package com.century.sjt.util;

import android.content.Context;
import android.telephony.TelephonyManager;

/**
 * Created by 炳基 on 2016/8/4.
 *
 * class name：SIMCardInfo<BR>
 * class description：读取Sim卡信息<BR>
 * PS： 必须在加入各种权限 <BR>
 * Role:Telecom service providers <BR>
 * 需要加入权限<uses-permission
 * android:name="android.permission.READ_PHONE_STATE"/> <BR>

*/
public class SIMCardInfo {
    /**
     * TelephonyManager提供设备上获取通讯服务信息的入口。 应用程序可以使用这个类方法确定的电信服务商和国家 以及某些类型的用户访问信息。
     * 应用程序也可以注册一个监听器到电话收状态的变化。不需要直接实例化这个类
     * 使用Context.getSystemService(Context.TELEPHONY_SERVICE)来获取这个类的实例。
     */
    private TelephonyManager telephonyManager;
    /**
     * 国际移动用户识别码
     */
    private String IMSI;

    public SIMCardInfo(Context context) {
        telephonyManager = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
    }

    /**
     * Role:获取当前设置的电话号码
     * <BR>Date:2012-3-12
     * <BR>@author CODYY)peijiangping
     */
    public String getNativePhoneNumber() {
        String NativePhoneNumber=null;
        NativePhoneNumber=telephonyManager.getLine1Number();
        return NativePhoneNumber;
    }

    //获取手机服务商信息
    public String getProvidersName() {
        String ProvidersName = null;
        // 返回唯一的用户ID;就是这张卡的编号神马的
        IMSI = telephonyManager.getSubscriberId();
        // IMSI号前面3位460是国家，紧接着后面2位00 02是中国移动，01是中国联通，03是中国电信。
        System.out.println(IMSI);
        if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
            ProvidersName = "中国移动";
        } else if (IMSI.startsWith("46001")) {
            ProvidersName = "中国联通";
        } else if (IMSI.startsWith("46003")) {
            ProvidersName = "中国电信";
        }
        return ProvidersName;
    }
    //获取设备编号
    public String getDeviceId(){
        String DeviceId = null;
        DeviceId = telephonyManager.getDeviceId();
        return DeviceId;
    }
    //获取设备类型
    public int getPhoneType(){
        int PhoneType = 0;
        PhoneType = telephonyManager.getPhoneType();
        return PhoneType;
    }
    //获取设备当前位置
    public String getCellLocation(){
        return telephonyManager.getCellLocation()==null? "未知"
                :telephonyManager.getCellLocation().toString();
//
    }
    //获取电话号码
    public String getLine1Number(){
        return telephonyManager.getLine1Number();
    }
    //获取运营商的国家代码
    public String getNetworkCountryIso(){
        return telephonyManager.getNetworkCountryIso();
    }
    //获取运营商的名称
    public String getNetworkOperatorName(){
        return telephonyManager.getNetworkOperatorName();
    }
    //获取网络类型
    public int getNetworkType(){
        return telephonyManager.getNetworkType();
    }
    //获取SPN
    public String getSimOperatorName(){
        return telephonyManager.getSimOperatorName().equals("")?"未知"
                :telephonyManager.getSimOperatorName();
    }
    //获取SIM卡的序列号
    public String getSimSerialNumber(){
        return telephonyManager.getSimSerialNumber();
    }
    //获取SIM卡状态
    public int getSimState(){
        return telephonyManager.getSimState();
    }

    //获取手机网络类型
    private String getNetworkType(int networkType) {
        // TODO Auto-generated method stub
        switch (networkType) {
            case TelephonyManager.NETWORK_TYPE_1xRTT:
                return "1xRTT";
            case TelephonyManager.NETWORK_TYPE_CDMA:
                return "CDMA";
            case TelephonyManager.NETWORK_TYPE_EDGE:
                return "EDGE";
            case TelephonyManager.NETWORK_TYPE_EHRPD:
                return "EHRPD";
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
                return "EVDO_0";
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
                return "EVDO_A";
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
                return "EVDO_B";
            case TelephonyManager.NETWORK_TYPE_GPRS:
                return "GPRS";
            case TelephonyManager.NETWORK_TYPE_HSDPA:
                return "HSDPA";
            case TelephonyManager.NETWORK_TYPE_HSPA:
                return "HSPA";
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return "HSPAP";
            case TelephonyManager.NETWORK_TYPE_HSUPA:
                return "HSUPA";
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return "IDEN";
            case TelephonyManager.NETWORK_TYPE_LTE:
                return "LTE";
            case TelephonyManager.NETWORK_TYPE_UMTS:
                return "UMTS";
            case TelephonyManager.NETWORK_TYPE_UNKNOWN:
                return "UNKNOWN";
            default:
                return "UNKNOWN";
        }
    }
}
